Skip to content

Conversation

@maxhodak
Copy link
Contributor

Summary

Major modernization of the synapse-cpp client library:

  • Replace NDTP with Taps for high-throughput ZMQ-based data streaming
  • Add new nodes: DiskWriter (HDF5), SpikeBinner
  • Expand Device API: query(), get_logs(), update_settings(), list_apps()
  • Add Dockerfile for containerized ARM/x86 builds
  • Align with synapse-api main branch changes

Breaking Changes

  • StreamIn/StreamOut nodes removed (use Taps)
  • UdpNode base class removed
  • NodeSocket removed from Device
  • SpikeDetect renamed to SpikeDetector
  • libndtp dependency replaced with cppzmq

Test plan

  • Docker build succeeds
  • All unit tests pass (6/6)
  • Manual testing with Synapse device

BREAKING CHANGE: Major API and architecture update

Streaming:
- Replace NDTP with Taps for high-throughput ZMQ-based data streaming
- Remove StreamIn/StreamOut nodes
- Add Tap client with producer/consumer support

Nodes:
- Add DiskWriter node for HDF5 recording
- Add SpikeBinner node for spike binning
- Rename SpikeDetect → SpikeDetector (API alignment)
- Remove UdpNode base class

Device:
- Add query(), get_logs(), update_settings(), list_apps() methods
- Remove NodeSocket (deprecated in synapse-api)

Build:
- Add Dockerfile for containerized ARM/x86 builds
- Replace libndtp with cppzmq dependency
- Update to latest synapse-api

Misc:
- Modernize device discovery with async support
- Update examples with new Tap-based streaming
@maxhodak maxhodak changed the title feat!: modernize synapse-cpp client (v2.0.0-rc1) Modernize synapse-cpp client (v2.0.0-rc1) Jan 21, 2026
@maxhodak maxhodak requested a review from emmazhou January 21, 2026 00:34
Copy link

@emmazhou emmazhou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lol this one I'm more than happy to rubber stamp but maybe give @calvinleng-science a chance to review if he wants?

@calvinleng-science
Copy link

lol this one I'm more than happy to rubber stamp but maybe give @calvinleng-science a chance to review if he wants?

i've never seen this repo before, didnt even know we had a c++ client. i can review it tomorrow if you guys want--pretty focused getting something else working right now

@maxhodak
Copy link
Contributor Author

@calvinleng-science I don't think this affects you actually; this is a Nexus thing. The headstages don't use this since the synapse apps aren't a client (the Apps SDK is separate).

The build was failing because spike_binner.pb.h couldn't be generated -
the submodule was pointing to v2.0.0 which predates the spike_binner.proto
addition.
@maxhodak maxhodak merged commit f076922 into main Jan 21, 2026
1 check passed
@maxhodak maxhodak deleted the remove-ndtp-and-upgrade branch January 21, 2026 03:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants